package biblioteca.dao;

import java.util.List;

import biblioteca.dao.exceptions.BibliotecaDAOException;
import biblioteca.modelo.*;

	public interface BibliotecaDAO {	     
				
//		void crearListaLibros() throws BibliotecaDAOException;
//		void crearListaAutores() throws BibliotecaDAOException;
//		void crearListaGeneros() throws BibliotecaDAOException;
//		void crearListaUsuarios() throws BibliotecaDAOException;
//		void crearListaPrestamos() throws BibliotecaDAOException;
		
		void guardarLibro(Libro libro) throws BibliotecaDAOException;
		void guardarAutor(Autor libro) throws BibliotecaDAOException;
		void guardarGenero(Genero libro) throws BibliotecaDAOException;
		void guardarUsuario(Usuario libro) throws BibliotecaDAOException;
		void guardarPrestamo(Prestamo libro) throws BibliotecaDAOException;
		
		void eliminarLibro(Libro libro) throws BibliotecaDAOException;
		void eliminarAutor(Autor autor) throws BibliotecaDAOException;
		void eliminarGenero(Genero genero) throws BibliotecaDAOException;
		void eliminarUsuario(Usuario usuario) throws BibliotecaDAOException;
		void eliminarPrestamo(Prestamo prestamo) throws BibliotecaDAOException;
		
		Libro buscarLibro(Libro libro) throws BibliotecaDAOException;
		Autor buscarAutor(Autor autor) throws BibliotecaDAOException;
		Genero buscarGenero(Genero genero) throws BibliotecaDAOException;
		Usuario buscarUsuario(Usuario usuario) throws BibliotecaDAOException;
		Prestamo buscarPrestamo(Prestamo prestamo) throws BibliotecaDAOException;
		
		List<Libro> obtenerLibros() throws BibliotecaDAOException;        
		List<Autor> obtenerAutores() throws BibliotecaDAOException;        
		List<Genero> obtenerGeneros() throws BibliotecaDAOException;        
		List<Usuario> obtenerUsuarios() throws BibliotecaDAOException;        
		List<Prestamo> obtenerPrestamo() throws BibliotecaDAOException;   
		
		boolean isPrestado(Libro libro) throws BibliotecaDAOException;		
		Usuario loginUsuario(Usuario usuario) throws BibliotecaDAOException;
}